package cn.edu.jsu.nrs.action;

import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.json.annotations.JSON;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
//import cn.edu.jsu.nrs.dto.UserInfor;
import cn.edu.jsu.nrs.model.User;
import cn.edu.jsu.nrs.service.ReplyService;
import cn.edu.jsu.nrs.service.UserService;
import cn.edu.jsu.nrs.util.ConvertArray;

import com.opensymphony.xwork2.ActionSupport;

@Component(value = "userAction")
@Scope("prototype")
public class UserAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private UserService userService;
	private ConvertArray convertArray;
	public User user;// 用户
	private int id;// 用户Id
	private int result;
	private int rows;
	private int page;
	private int totalPage;// 总页数
	private int totalCount;// 总记录数
	private String sord;// 排序方式
	private String sidx;// 排序字段
	private String userName;
	private List<User> users;
	private String ids;
	



	/*
	 * public String adminSignIn(){ HttpSession session =
	 * ServletActionContext.getRequest().getSession();// session User loginUser;
	 * loginUser = userService.doLogin(user.getUserName(), user.getPassword(),
	 * 1); if (loginUser.getUserId() == null) { result = 0;// 登录失败 }else { if
	 * (session.getAttribute("user") != null) { session.removeAttribute("user");
	 * } session.setAttribute("user", loginUser); user = (User)
	 * session.getAttribute("user");// 返回的用户信息
	 * 
	 * System.out.println("userName"+user.getUserName()); result = 1; } return
	 * "adminSignIn"; }
	 */
	/***
	 * 用户登录
	 * 
	 * @return
	 */
	public String signIn() {
		HttpSession session = ServletActionContext.getRequest().getSession();// session
		User loginUser;
		if (user.getIsAdmin() == 0) {// 用户登录
			loginUser = userService.doLogin(user.getUserName(),
					user.getPassword(), 0);
			if (loginUser.getUserId() == null) {
				result = 0;// 登录失败
			} else {
				if (session.getAttribute("user") != null) {
					session.removeAttribute("user");
				}
				session.setAttribute("user", loginUser);
				user = (User) session.getAttribute("user");// 返回的用户信息
				result = 1;
			}
		} else {// 管理员登录
			loginUser = userService.doLogin(user.getUserName(),
					user.getPassword(), 1);
			if (loginUser.getUserId() == null) {
				result = 0;// 登录失败
			} else {
				if (session.getAttribute("admin") != null) {
					session.removeAttribute("admin");
				}
				session.setAttribute("admin", loginUser);
				user = (User) session.getAttribute("admin");// 返回的用户信息
				result = 1;
			}
		}

		return "signIn";
	}

	/**
	 * 退出登录
	 * 
	 * @return
	 */
	public String signOut() {
		HttpSession session = ServletActionContext.getRequest().getSession();// session
		if (user.getIsAdmin() == 0) {// 用户退出登录
			session.removeAttribute("user");

		} else {// 管理员退出登录
			session.removeAttribute("admin");
		}
		return "signOut";
	}

	/**
	 * 加载session中的用户信息
	 * 
	 * @return
	 */
	public String loadSessionUser() {
		HttpSession session = ServletActionContext.getRequest().getSession();// session
		if (session.getAttribute("user") != null) {
			user = (User) session.getAttribute("user");
		}
		return "sessionUser";
	}

	/**
	 * 加载session中的管理员信息
	 * 
	 * @return
	 */
	public String loadSessionAdmin() {
		HttpSession session = ServletActionContext.getRequest().getSession();
		System.out.println(session.getAttribute("admin"));
		if (session.getAttribute("admin") != null) {
			user = (User) session.getAttribute("admin");
		}
		return "sessionAdmin";

	}

	/**
	 * 检查用户是否存在
	 * 
	 * @return
	 */
	public String checkUserIsExist() {
		System.out.println(user.getUserName());
		if (userService.isExistsUser(user.getUserName())) {
			result = 1;
		} else {
			result = 0;
		}
		return "userRight";
	}

	/**
	 * 注册
	 * 
	 * @return
	 */
	public String signUp() {
		System.out.println(user);
		if (userService.addUser(user)) {
			HttpSession session = ServletActionContext.getRequest()
					.getSession();
			session.setAttribute("user", user);
			return "signUp";
		}
		return ERROR;
	}

	/**
	 * 查询用户列表
	 * 
	 * @return
	 */
	public String loadUserList() {
		users = userService.getUserList((page - 1) * rows, rows, userName,
				sord, sidx);
		totalCount = userService.getUsersCounts(userName, sord, sidx);
		if (rows!=0 && users.size()!=0) {
			totalPage = totalCount/rows + 1;
		}
		return "userList";
	}

	/***
	 * 删除用户
	 * 
	 * @return
	 */
	public String deleteUser() {
		//String[] deleteIds = convertIdsToArray();
		String[] deleteIds=convertArray.convertIdsToArray(ids);
		for (int i = 0; i < deleteIds.length; i++) {//循环取出要删除的用户id
			int id=Integer.parseInt(deleteIds[i].trim());
			User user = userService.findUserById(id);// 根据用户id获得用户信息
			if (user != null) {
				userService.deleteUser(user);// 删除用户
				result=1;
			} else {
				result=0;
				continue;
				
			}
		}
		if (result==1) {
			return "deleteSuccess";
		}else {
			return "deleteFail";// 删除失败
		}
		
	}


	/**
	 * 更新用户
	 * 
	 * @return
	 */
	public String updateUser() {
		userService.updateUser(user);
		result=1;
		return "updateUser";
	}

	public String addUser() {
		if (userService.addUser(user)) {
			result=1;
		}else {
			result=0;
		}
		return "addUser";
	}

	//
	// public UserService getUserService() {
	// return userService;
	// }
	//

	//
	// /**
	// * 用户信息模型
	// */
	// public UserInfor userInfor = new UserInfor();
	// private int result;
	//
	// public int getResult() {
	// return result;
	// }
	//
	// public void setResult(int result) {
	// this.result = result;
	// }
	//
	// private int pageIndex;// 页码索引
	//
	// public int getPageIndex() {
	// return pageIndex;
	// }
	//
	// public void setPageIndex(int pageIndex) {
	// this.pageIndex = pageIndex;
	// }
	//
	// private int pageSize;// 页的大小
	//
	// public int getPageSize() {
	// return pageSize;
	// }
	//
	// public void setPageSize(int pageSize) {
	// this.pageSize = pageSize;
	// }
	//
	// private int totalCount;// 用户的记录数
	//
	// public int getTotalCount() {
	// return totalCount;
	// }
	//
	// public void setTotalCount(int totalCount) {
	// this.totalCount = totalCount;
	// }
	//
	// /**
	// * 用户列表
	// *
	// * @return
	// */
	// private List<User> usersList = new ArrayList<User>();
	//
	// public List<User> getUsersList() {
	// return usersList;
	// }
	//
	// public void setUsersList(List<User> usersList) {
	// this.usersList = usersList;
	// }
	//
	// /**
	// * 用户id列表集合
	// */
	// private List<Integer> userIdList = new ArrayList<Integer>();
	//
	// public List<Integer> getUserIdList() {
	// return userIdList;
	// }
	//
	// public void setUserIdList(List<Integer> userIdList) {
	// this.userIdList = userIdList;
	// }
	//
	// public String test() {
	// User user = userService.findUserById(1);
	// // System.out.println(user.getEmail());
	// return SUCCESS;
	// }
	//

	//

	// // 登录
	// public String signIn() {
	// String userName = userInfor.getUserName();
	// String password = userInfor.getPassword();
	// HttpSession session = ServletActionContext.getRequest().getSession();
	// User user = userService.doLogin(userName, password);// 获取用户信息
	// System.out.println(user);
	// if (user == null) {
	//
	// return "Fail";
	//
	// }
	// // 用户不存在
	// if (user.getId() == 0) {
	// session.removeAttribute("user");
	// }
	// // 用户存在，把用户新闻添加到session
	// session.setAttribute("user", user);
	// return "signIn";
	// }
	//
	// // 获得用户的总记录数
	// public String usersCount() {
	// totalCount = userService.getUsersCounts();
	// return "usersCount";
	// }
	//
	// // 分页查询所有的用户列表
	// public String userPaging() {
	// usersList = userService.getListForPage("from User", pageIndex
	// * pageSize, pageSize);
	// return "pageList";
	// }
	//
	// public String getUsers() {
	// List<User> users = userService.getListForPage("from User", 1, 10);
	// for (int i = 0; i < users.size(); i++) {
	// Map<String, Object> row = new HashMap<String, Object>();
	// User user = users.get(i);
	// row.put("id", user.getId());
	// row.put("userName", user.getUserName());
	// row.put("sex", user.getSex());
	// row.put("email", user.getEmail());
	// row.put("birthday", user.getBirthday());
	// row.put("registerTime", user.getRegisterTime());
	// dataRows.add(row);
	// }
	// setCurPage(1);
	// setTotalPages(2);
	// setTotalRecords(users.size());
	// System.out.println(page.getPageSize());
	// System.out.println(page.getTotalCount());
	// return "getusers";
	// }
	//
	// public String getAllUsersList() {
	// usersList = userService.getAllUsers();
	// return "AllUsersList";
	// }
	//
	// // 模糊查询用户
	//

	//
	// // 批量删除用户
	// public String abatchDeleteUser() {
	// User user = new User();// 用户实例
	// for (int i = 0; i < userIdList.size(); i++) {
	// int id = userIdList.get(i);
	// user = userService.findUserById(id);// 查找要删除的用户
	// if (user != null) {// 如果用户存在
	// userService.deleteUser(user);
	// }
	// return "deleteSuccess";
	// }
	//
	// return "deleteFail";
	// }
	//
	// // 修改用户信息
	// public String updateUserInfor() {
	// user = userService.findUserById(userInfor.getId());// 得到用户信息
	// // 设置要修改的用户信息
	// user.setUserName(userInfor.getUserName());// 修改用户名
	// user.setPassword(userInfor.getPassword());// 用户密码
	// user.setEmail(userInfor.getEmail());// 邮件
	//
	// return "upadateSuccess";
	// }
	//
	// // 退出登录
	// public String signOut() {
	// HttpSession session = ServletActionContext.getRequest().getSession();
	// session.removeAttribute("user");
	// return "signOut";
	// }
	//
	// public UserInfor getModel() {
	// return userInfor;
	// }
	//
	// public int getTotalPages() {
	// return this.totalPages;
	// }
	//
	// public int getCurPage() {
	// return this.curPage;
	// }
	//
	// public int getTotalRecords() {
	// return this.totalRecords;
	// }
	//
	// public List<Map<String, Object>> getDataRows() {
	// return this.dataRows;
	// }
	//

	@JSON
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public void setId(int id) {
		this.id = id;
	}

	@JSON
	public int getResult() {
		return result;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}

	public int getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}

	public int getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}

	public String getSord() {
		return sord;
	}

	public void setSord(String sord) {
		this.sord = sord;
	}

	public String getSidx() {
		return sidx;
	}

	public void setSidx(String sidx) {
		this.sidx = sidx;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public List<User> getUsers() {
		return users;
	}
	
	public void setIds(String ids) {
		this.ids = ids;
	}

	@Resource(name = "userService")
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	
	
	@Resource
	public void setConvertArray(ConvertArray convertArray) {
		this.convertArray = convertArray;
	}
}
